package com.example.i2v.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 视频生成请求模型
 */
@Data
public class VideoGenerationRequest {
    
    /**
     * 模型名称，固定为wan2.2-i2v-plus
     */
    @NotBlank(message = "模型名称不能为空")
    private String model = "wan2.2-i2v-plus";
    
    /**
     * 输入参数
     */
    @NotNull(message = "输入参数不能为空")
    private Input input;
    
    /**
     * 生成参数
     */
    private Parameters parameters;
    
    @Data
    public static class Input {
        /**
         * 文本提示词
         */
        private String prompt;
        
        /**
         * 首帧图像的URL或Base64编码数据
         */
        @NotBlank(message = "图像URL不能为空")
        @JsonProperty("img_url")
        private String imgUrl;
    }
    
    @Data
    public static class Parameters {
        /**
         * 生成视频的分辨率档位，可选值：480P、1080P，默认1080P
         */
        private String resolution = "1080P";
        
        /**
         * 是否开启prompt智能改写，默认true
         */
        @JsonProperty("prompt_extend")
        private Boolean promptExtend = true;
    }
}